package com.yuandian.management.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.yuandian.api.management.entity.ConfAgentIp;
import com.yuandian.api.management.entity.ConfAgentStatusInfo;
import com.yuandian.bpm.common.core.util.R;
import com.yuandian.management.vo.AgentStatusInfoDto;
import com.yuandian.management.vo.AgentStatusInfoParams;
import com.yuandian.management.vo.AgentStatusInfoPojo;

import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;

/**
 * Agent状态信息表-Service接口
 * @author zfsn
 * @date 2023-4-14
 */
public interface ConfAgentStatusInfoService extends IService<ConfAgentStatusInfo> {

	/**
	 * 保存agent状态信息
	 *
	 * @param apdtos
	 * @param request
	 * @throws Exception
	 */
	void handleAgentStatusInfo(AgentStatusInfoDto[] apdtos, HttpServletRequest request);

	/**
	 * 前端删除agent的时候查询十分钟该agent是否有数据，有就不能逻辑删除
	 *
	 * @param map
	 * @return
	 */
	List<ConfAgentStatusInfo> countTenMinuteGroupByIp(Map map);

	/**
	 * 统计断采个数、异常个数、正常个数
	 *
	 * @return
	 */
	List<ConfAgentStatusInfo> countByAgentStatus();

	/**
	 * 查询当天的信息，按ip分组统计，参数是状态
	 *
	 * @param ap
	 * @return
	 */
	 R queryListGroupByIpAndAgentStatus(AgentStatusInfoParams ap);

	/**
	 * 查询当天的信息，按ip和状态查询
	 *
	 * @param ap
	 *
	 * @return
	 */
	 R queryListByIpAndAgentStatus( AgentStatusInfoParams ap);

	/**
	 * 更新当天的不参加top展示的断采信息
	 *
	 * @param agentIp
	 * @return
	 */
	int updateCollectTopStatusByIp(String agentIp);

	/**
	 * 前端操作，根据ip过滤掉当前的异常top排名
	 *
	 * @param agentIp
	 * @return
	 */
	int updateWrongTopStatusByIp(String agentIp);

	/**
	 * 前端获取最新的一个agent详情
	 *
	 * @param ap
	 * @return
	 */
	 ConfAgentStatusInfo getAgentDetail(AgentStatusInfoPojo ap);


	/**
	 * 根据ip获取该ip历史启动时间
	 *
	 * @param agentIp
	 * @return
	 */
	 List<ConfAgentStatusInfo> rebootHistoryTime(String agentIp);

	/**
	 * 获取探针部署ip
	 *
	 * @param moduleName
	 * @return
	 */
	 List<String> getModuleManagement(String moduleName);

	/**
	 * 统计agent状态个数
	 *
	 * @return
	 */
	 R getAgentCount();

	/**
	 * 查询断采top数据
	 *
	 * @return
	 */
	 R getBreakTop();

	/**
	 * 查询异常top数据
	 *
	 * @return
	 */
	 R getWrongTop();

	/**
	 * 丢包率历史曲线图
	 *
	 * @param params
	 * @return
	 */
	 R lostHistoryLine(AgentStatusInfoParams params);

	/**
	 * 流量历史曲线图
	 *
	 * @param params
	 * @return
	 */
	 R speedHistoryLine(AgentStatusInfoParams params);

	/**
	 * 根据条件查询
	 *
	 * @param searchKey
	 * @return
	 */
    List<ConfAgentIp> queryList(String searchKey);
}